/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.camel.kafkaconnector.seda;

import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.kafkaconnector.CamelSinkConnectorConfig;
import org.apache.kafka.common.config.ConfigDef;

@Generated("This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.")
public class CamelSedaSinkConnectorConfig extends CamelSinkConnectorConfig {

    public static final String CAMEL_SINK_SEDA_PATH_NAME_CONF = "camel.sink.path.name";
    public static final String CAMEL_SINK_SEDA_PATH_NAME_DOC = "Name of queue";
    public static final String CAMEL_SINK_SEDA_PATH_NAME_DEFAULT = null;
    public static final String CAMEL_SINK_SEDA_ENDPOINT_SIZE_CONF = "camel.sink.endpoint.size";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_SIZE_DOC = "The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component.";
    public static final Integer CAMEL_SINK_SEDA_ENDPOINT_SIZE_DEFAULT = 1000;
    public static final String CAMEL_SINK_SEDA_ENDPOINT_BLOCK_WHEN_FULL_CONF = "camel.sink.endpoint.blockWhenFull";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_BLOCK_WHEN_FULL_DOC = "Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted.";
    public static final Boolean CAMEL_SINK_SEDA_ENDPOINT_BLOCK_WHEN_FULL_DEFAULT = false;
    public static final String CAMEL_SINK_SEDA_ENDPOINT_DISCARD_IF_NO_CONSUMERS_CONF = "camel.sink.endpoint.discardIfNoConsumers";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_DISCARD_IF_NO_CONSUMERS_DOC = "Whether the producer should discard the message (do not add the message to the queue), when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time.";
    public static final Boolean CAMEL_SINK_SEDA_ENDPOINT_DISCARD_IF_NO_CONSUMERS_DEFAULT = false;
    public static final String CAMEL_SINK_SEDA_ENDPOINT_DISCARD_WHEN_FULL_CONF = "camel.sink.endpoint.discardWhenFull";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_DISCARD_WHEN_FULL_DOC = "Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue.";
    public static final Boolean CAMEL_SINK_SEDA_ENDPOINT_DISCARD_WHEN_FULL_DEFAULT = false;
    public static final String CAMEL_SINK_SEDA_ENDPOINT_FAIL_IF_NO_CONSUMERS_CONF = "camel.sink.endpoint.failIfNoConsumers";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_FAIL_IF_NO_CONSUMERS_DOC = "Whether the producer should fail by throwing an exception, when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time.";
    public static final Boolean CAMEL_SINK_SEDA_ENDPOINT_FAIL_IF_NO_CONSUMERS_DEFAULT = false;
    public static final String CAMEL_SINK_SEDA_ENDPOINT_LAZY_START_PRODUCER_CONF = "camel.sink.endpoint.lazyStartProducer";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_LAZY_START_PRODUCER_DOC = "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.";
    public static final Boolean CAMEL_SINK_SEDA_ENDPOINT_LAZY_START_PRODUCER_DEFAULT = false;
    public static final String CAMEL_SINK_SEDA_ENDPOINT_OFFER_TIMEOUT_CONF = "camel.sink.endpoint.offerTimeout";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_OFFER_TIMEOUT_DOC = "offerTimeout (in milliseconds) can be added to the block case when queue is full. You can disable timeout by using 0 or a negative value.";
    public static final Long CAMEL_SINK_SEDA_ENDPOINT_OFFER_TIMEOUT_DEFAULT = null;
    public static final String CAMEL_SINK_SEDA_ENDPOINT_TIMEOUT_CONF = "camel.sink.endpoint.timeout";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_TIMEOUT_DOC = "Timeout (in milliseconds) before a SEDA producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value.";
    public static final Long CAMEL_SINK_SEDA_ENDPOINT_TIMEOUT_DEFAULT = 30000L;
    public static final String CAMEL_SINK_SEDA_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_CONF = "camel.sink.endpoint.waitForTaskToComplete";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_DOC = "Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. The default option is IfReplyExpected. One of: [Never] [IfReplyExpected] [Always]";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_DEFAULT = "IfReplyExpected";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_QUEUE_CONF = "camel.sink.endpoint.queue";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_QUEUE_DOC = "Define the queue instance which will be used by the endpoint";
    public static final String CAMEL_SINK_SEDA_ENDPOINT_QUEUE_DEFAULT = null;
    public static final String CAMEL_SINK_SEDA_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_CONF = "camel.component.seda.defaultBlockWhenFull";
    public static final String CAMEL_SINK_SEDA_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_DOC = "Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted.";
    public static final Boolean CAMEL_SINK_SEDA_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_DEFAULT = false;
    public static final String CAMEL_SINK_SEDA_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_CONF = "camel.component.seda.defaultDiscardWhenFull";
    public static final String CAMEL_SINK_SEDA_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_DOC = "Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue.";
    public static final Boolean CAMEL_SINK_SEDA_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_DEFAULT = false;
    public static final String CAMEL_SINK_SEDA_COMPONENT_DEFAULT_OFFER_TIMEOUT_CONF = "camel.component.seda.defaultOfferTimeout";
    public static final String CAMEL_SINK_SEDA_COMPONENT_DEFAULT_OFFER_TIMEOUT_DOC = "Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, where a configured timeout can be added to the block case. Utilizing the .offer(timeout) method of the underlining java queue";
    public static final Long CAMEL_SINK_SEDA_COMPONENT_DEFAULT_OFFER_TIMEOUT_DEFAULT = null;
    public static final String CAMEL_SINK_SEDA_COMPONENT_LAZY_START_PRODUCER_CONF = "camel.component.seda.lazyStartProducer";
    public static final String CAMEL_SINK_SEDA_COMPONENT_LAZY_START_PRODUCER_DOC = "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.";
    public static final Boolean CAMEL_SINK_SEDA_COMPONENT_LAZY_START_PRODUCER_DEFAULT = false;
    public static final String CAMEL_SINK_SEDA_COMPONENT_AUTOWIRED_ENABLED_CONF = "camel.component.seda.autowiredEnabled";
    public static final String CAMEL_SINK_SEDA_COMPONENT_AUTOWIRED_ENABLED_DOC = "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc.";
    public static final Boolean CAMEL_SINK_SEDA_COMPONENT_AUTOWIRED_ENABLED_DEFAULT = true;
    public static final String CAMEL_SINK_SEDA_COMPONENT_DEFAULT_QUEUE_FACTORY_CONF = "camel.component.seda.defaultQueueFactory";
    public static final String CAMEL_SINK_SEDA_COMPONENT_DEFAULT_QUEUE_FACTORY_DOC = "Sets the default queue factory.";
    public static final String CAMEL_SINK_SEDA_COMPONENT_DEFAULT_QUEUE_FACTORY_DEFAULT = null;
    public static final String CAMEL_SINK_SEDA_COMPONENT_QUEUE_SIZE_CONF = "camel.component.seda.queueSize";
    public static final String CAMEL_SINK_SEDA_COMPONENT_QUEUE_SIZE_DOC = "Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold).";
    public static final Integer CAMEL_SINK_SEDA_COMPONENT_QUEUE_SIZE_DEFAULT = 1000;

    public CamelSedaSinkConnectorConfig(
            ConfigDef config,
            Map<String, String> parsedConfig) {
        super(config, parsedConfig);
    }

    public CamelSedaSinkConnectorConfig(Map<String, String> parsedConfig) {
        this(conf(), parsedConfig);
    }

    public static ConfigDef conf() {
        ConfigDef conf = new ConfigDef(CamelSinkConnectorConfig.conf());
        conf.define(CAMEL_SINK_SEDA_PATH_NAME_CONF, ConfigDef.Type.STRING, CAMEL_SINK_SEDA_PATH_NAME_DEFAULT, ConfigDef.Importance.HIGH, CAMEL_SINK_SEDA_PATH_NAME_DOC);
        conf.define(CAMEL_SINK_SEDA_ENDPOINT_SIZE_CONF, ConfigDef.Type.INT, CAMEL_SINK_SEDA_ENDPOINT_SIZE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_ENDPOINT_SIZE_DOC);
        conf.define(CAMEL_SINK_SEDA_ENDPOINT_BLOCK_WHEN_FULL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_SEDA_ENDPOINT_BLOCK_WHEN_FULL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_ENDPOINT_BLOCK_WHEN_FULL_DOC);
        conf.define(CAMEL_SINK_SEDA_ENDPOINT_DISCARD_IF_NO_CONSUMERS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_SEDA_ENDPOINT_DISCARD_IF_NO_CONSUMERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_ENDPOINT_DISCARD_IF_NO_CONSUMERS_DOC);
        conf.define(CAMEL_SINK_SEDA_ENDPOINT_DISCARD_WHEN_FULL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_SEDA_ENDPOINT_DISCARD_WHEN_FULL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_ENDPOINT_DISCARD_WHEN_FULL_DOC);
        conf.define(CAMEL_SINK_SEDA_ENDPOINT_FAIL_IF_NO_CONSUMERS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_SEDA_ENDPOINT_FAIL_IF_NO_CONSUMERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_ENDPOINT_FAIL_IF_NO_CONSUMERS_DOC);
        conf.define(CAMEL_SINK_SEDA_ENDPOINT_LAZY_START_PRODUCER_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_SEDA_ENDPOINT_LAZY_START_PRODUCER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_ENDPOINT_LAZY_START_PRODUCER_DOC);
        conf.define(CAMEL_SINK_SEDA_ENDPOINT_OFFER_TIMEOUT_CONF, ConfigDef.Type.LONG, CAMEL_SINK_SEDA_ENDPOINT_OFFER_TIMEOUT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_ENDPOINT_OFFER_TIMEOUT_DOC);
        conf.define(CAMEL_SINK_SEDA_ENDPOINT_TIMEOUT_CONF, ConfigDef.Type.LONG, CAMEL_SINK_SEDA_ENDPOINT_TIMEOUT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_ENDPOINT_TIMEOUT_DOC);
        conf.define(CAMEL_SINK_SEDA_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_SEDA_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_DOC);
        conf.define(CAMEL_SINK_SEDA_ENDPOINT_QUEUE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_SEDA_ENDPOINT_QUEUE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_ENDPOINT_QUEUE_DOC);
        conf.define(CAMEL_SINK_SEDA_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_SEDA_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_DOC);
        conf.define(CAMEL_SINK_SEDA_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_SEDA_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_DOC);
        conf.define(CAMEL_SINK_SEDA_COMPONENT_DEFAULT_OFFER_TIMEOUT_CONF, ConfigDef.Type.LONG, CAMEL_SINK_SEDA_COMPONENT_DEFAULT_OFFER_TIMEOUT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_COMPONENT_DEFAULT_OFFER_TIMEOUT_DOC);
        conf.define(CAMEL_SINK_SEDA_COMPONENT_LAZY_START_PRODUCER_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_SEDA_COMPONENT_LAZY_START_PRODUCER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_COMPONENT_LAZY_START_PRODUCER_DOC);
        conf.define(CAMEL_SINK_SEDA_COMPONENT_AUTOWIRED_ENABLED_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_SEDA_COMPONENT_AUTOWIRED_ENABLED_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_COMPONENT_AUTOWIRED_ENABLED_DOC);
        conf.define(CAMEL_SINK_SEDA_COMPONENT_DEFAULT_QUEUE_FACTORY_CONF, ConfigDef.Type.STRING, CAMEL_SINK_SEDA_COMPONENT_DEFAULT_QUEUE_FACTORY_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_COMPONENT_DEFAULT_QUEUE_FACTORY_DOC);
        conf.define(CAMEL_SINK_SEDA_COMPONENT_QUEUE_SIZE_CONF, ConfigDef.Type.INT, CAMEL_SINK_SEDA_COMPONENT_QUEUE_SIZE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_SEDA_COMPONENT_QUEUE_SIZE_DOC);
        return conf;
    }
}